package com.os.util;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.HexUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.Sign;
import cn.hutool.crypto.asymmetric.SignAlgorithm;
import cn.hutool.crypto.digest.Digester;
import org.springframework.validation.annotation.Validated;

import java.io.InputStream;

/**
 * @author 风亦未止
 * @date 2023/5/2 18:07
 */
public class Hash {

    /**
     * 对文件做一个整体的hash校验
     * @param bytes
     * @return
     */
    public static String hash(byte[] bytes){
        Digester digester = SecureUtil.sha256();
        byte[] digest = digester.digest(bytes);
        String encode = HexUtil.encodeHexStr(digest);
        return encode;
    }

    /**
     * 根据流计算hash(废弃)
     *
     * 但使用此方法就需要客户端那边先计算整个文件的hash值，再做一系列的校验等，最后使临时文件转正。
     *
     * 如果客户端不携带，无法第一时间根据hash元数据查询文件是否上传了，所以此次版本先不用此方法。
     * @param data
     * @return
     */
    @Deprecated
    public static String hash(InputStream data){
        Digester digester = SecureUtil.sha256();
        String encode = HexUtil.encodeHexStr(digester.digest(data));
        return encode;
    }

}
